我制作了一个小的bash脚本,以获取文件特定列中项目的频率。输出会是这样的A30B25C20D15E10我在脚本中使用的命令是这样的cut-f$1$2|sort|uniq-c|sort-r-k1,1-n|awk'{printf"%-20s%-15d\n",$2,$1}'我如何修改它以显示每个案例的相对百分比。所以它就像A3030%B2525%C2020%D1515%E1010% 最佳答案 试试这个(把排序移到最后:cut-f$1$2|sort|uniq-c|awk'{array[$2]=$1;sum+=$1}END{for(iina
我制作了一个小的bash脚本,以获取文件特定列中项目的频率。输出会是这样的A30B25C20D15E10我在脚本中使用的命令是这样的cut-f$1$2|sort|uniq-c|sort-r-k1,1-n|awk'{printf"%-20s%-15d\n",$2,$1}'我如何修改它以显示每个案例的相对百分比。所以它就像A3030%B2525%C2020%D1515%E1010% 最佳答案 试试这个(把排序移到最后:cut-f$1$2|sort|uniq-c|awk'{array[$2]=$1;sum+=$1}END{for(iina
我有两个几乎相同的bash脚本。一个有效,一个无效,我不知道发生了什么。以下是脚本:这个很好用:#!/bin/bashCURDIR=$HOME/Documents/Development/road/EarthmovingTOL=0.05echo-e"\nRunningUnitTests"echo-e"------------------\n"forinfilein$CURDIR/utest/*.csvdofile=$(basename$infile.csv)echo-n"Test$file"value=`$CURDIR/Release/earthmove-f$infile`res=`c
我有两个几乎相同的bash脚本。一个有效,一个无效,我不知道发生了什么。以下是脚本:这个很好用:#!/bin/bashCURDIR=$HOME/Documents/Development/road/EarthmovingTOL=0.05echo-e"\nRunningUnitTests"echo-e"------------------\n"forinfilein$CURDIR/utest/*.csvdofile=$(basename$infile.csv)echo-n"Test$file"value=`$CURDIR/Release/earthmove-f$infile`res=`c
众所周知,按向上箭头键可以显示历史命令,但我发现以空格开头的命令不会显示在“向上箭头”的历史记录中:$ls$(按向上箭头键)bash将显示:$ls但是:$ps$ls(注意这个命令以空格开头)现在我按向上箭头键,它会显示'ps'而不是'ls':$ps这是bash中的错误还是特定功能?:) 最佳答案 来自bash(1):HISTCONTROLAcolon-separatedlistofvaluescontrollinghowcommandsaresavedonthehistorylist.Ifthelistofvaluesinclude
众所周知,按向上箭头键可以显示历史命令,但我发现以空格开头的命令不会显示在“向上箭头”的历史记录中:$ls$(按向上箭头键)bash将显示:$ls但是:$ps$ls(注意这个命令以空格开头)现在我按向上箭头键,它会显示'ps'而不是'ls':$ps这是bash中的错误还是特定功能?:) 最佳答案 来自bash(1):HISTCONTROLAcolon-separatedlistofvaluescontrollinghowcommandsaresavedonthehistorylist.Ifthelistofvaluesinclude
请注意:本站有很多关于如何测试单个shell变量的问题。这个问题是关于测试任何undefinedvariable的脚本。您可以在bash中使用undefinedvariable而不会在执行时看到任何错误:#!/bin/bashecho${UNDEF_FILE}ls-l${UNDEF_FILE}exit0我发现这很容易出错。如果我想在大型脚本中更改变量的名称,或删除该变量,所有以前的陈旧引用都会导致脚本出错。有时这对调试来说并不明显,或者您发现时为时已晚。为什么允许这样做?有什么方法可以标记undefinedvariable吗? 最佳答案
请注意:本站有很多关于如何测试单个shell变量的问题。这个问题是关于测试任何undefinedvariable的脚本。您可以在bash中使用undefinedvariable而不会在执行时看到任何错误:#!/bin/bashecho${UNDEF_FILE}ls-l${UNDEF_FILE}exit0我发现这很容易出错。如果我想在大型脚本中更改变量的名称,或删除该变量,所有以前的陈旧引用都会导致脚本出错。有时这对调试来说并不明显,或者您发现时为时已晚。为什么允许这样做?有什么方法可以标记undefinedvariable吗? 最佳答案
我正在尝试让for循环将文本输出到文件10次。这是我所拥有的:for((i=1;itestforloop.txtdone这会将HelloWorld输出一次到文件testforloop.txt。如果我不输出到文件,它会在屏幕上打印10次HelloWorld。 最佳答案 您正在使用>重定向,它会在循环内清除文件的现有内容并将其替换为命令的输出。所以这会删除之前的内容10次,每次替换为一行。没有>,或者用>/dev/tty,它会转到您的显示器,其中>无法删除任何内容,因此您会看到所有十份副本。你可以使用>>,它仍然会打开文件十次,但每次都
我正在尝试让for循环将文本输出到文件10次。这是我所拥有的:for((i=1;itestforloop.txtdone这会将HelloWorld输出一次到文件testforloop.txt。如果我不输出到文件,它会在屏幕上打印10次HelloWorld。 最佳答案 您正在使用>重定向,它会在循环内清除文件的现有内容并将其替换为命令的输出。所以这会删除之前的内容10次,每次替换为一行。没有>,或者用>/dev/tty,它会转到您的显示器,其中>无法删除任何内容,因此您会看到所有十份副本。你可以使用>>,它仍然会打开文件十次,但每次都